Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码 您所在的位置:网站首页 手机人人网 找人 Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码

Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码

2024-01-23 01:53| 来源: 网络整理| 查看: 265

 题记:

 

11月14日早晨8点,人人网发布公告,宣布人人公司将人人网社交平台业务相关资产以2000万美元的现金加4000万美元的股票对价出售予北京多牛传媒,自此,人人公司将专注于境内的二手车业务和在美国的投资业务。

人人网CEO陈一舟说:“很高兴为人人网找到一个新的归宿和起点。”

然而对于人人网曾经近2亿的注册用户来说,哪有什么新的开始,故事已经到了尽头。

彼时,他们还是刚刚逃离高考噩梦的青涩大学生,抓住人人网这个宣泄口乐此不疲地表达着自我;现在,他们苦思冥想记忆中的账号密码,费力登上网站,发布最后一条状态:再见,人人。

还有更多的人登陆了人人网的手机客户端,结果发现连发布状态的按钮都找不到,一个明晃晃的“我要开播”,和首页上让人眼花缭乱的美女短视频,显示出在移动互联网时代,人人网早已从一个社交App,转型为短视频和直播应用。

他们只能压抑住心中的不舍,卸载了这个承载青春记忆的网站,转而去微博上说出那句告别的话语,和千千万的人一起来缅怀过往,“人人网被卖了”迅速站上热搜榜第一。

 

曾经活跃在人人上的那些青年们,如今都走入社会结婚生子,他们中的许多人,正是在人人上认识了自己的人生伴侣;而新的大学年轻人被琳琅满目的App牵着走,睁眼微信,早饭抖音,上课豆瓣,下课B站,午饭微博,晚饭头条,一个个分散在各自的小圈子里,十年前全国的青年汇聚在校内网上谈论星辰大海的场景,终究会消逝在一代人的记忆当中。

 

 

此次案例:

Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地

 

逆向思维来

以自己的人人网主页为例http://www.renren.com/23231****/profile,其中23231****是人人网给每个人分配的id号(用****隐去了后面四位)

因为需要使用账户名和密码,本程序使用了cookie登陆(每天需要更换cookie)

 

第一步:下载某个相册内的所有照片到本地

打开自己的某个相册,我的以http://photo.renren.com/photo/23231****/album-252396640/v7,为例。多开几个相册观察相册的连接可以发现,album-后面的字符串代表了相册的id

人人网存储了两种大小的照片,一种是缩略图,一种是点开某个照片显示的原图(当然不可能跟你拍的原图是一样大小的,为节省空间,上传的过程中系统会进行同比例的压缩处理),我们这个脚本下载较大尺寸的照片

按F12打开开发者工具,找到某个照片的连接,分别copy到浏览器看一下哪个是大尺寸的照片连接,可以看到标红的即为我们需要的

那么接下来就是使用python赶紧着把这些url获取到吧

but!

xpath爬出来是空,why?查询源代码后发现上一段代码是写在标签内的

那么就用正则匹配试了下是ok哒

but!

抓取出来的url数量比相册内的照片数量少啊,看了几个相册发现,源代码中的url最多有40个,如果你的相册中照片数量大于40就会不全,心塞!

爬虫写的多了,到这里就知道应该去哪里找了,当然是动态加载文件啊

开发者工具切换到network页签选择XHR,然后刷新一下网页并滑动到相册最下面,可以看到左下侧出现了很多,点击红色框线内的随意一个文件,在右侧选中Headers看RequestURL

 

 

 

把这段字符串粘贴到浏览器中,发现显示是json数据

 

经测试可知,去掉&requestToken=-1989347373&_rtk=552df62d也可,并且前面的pageSize可以更改大小(最大是100)

遍历输出的时候需要注意:相册内数量、pageSize和page三者是有关联的

那么问题来了,我还需要获取到相册数量这个参数!

 

1 def download_photo(each_album_link,album_photoNumber,album_name,album_id,person): 2 """ 3 按照相册下载内部所有照片到同名文件夹 4 :param each_album_link: 各个相册链接 5 :param album_photoNumber: 每个相册内的照片数量 6 :param album_name: 相册名称,用来创建同名的文件夹 7 :param album_id:相册id,用来创建同名文件夹 8 :param person: 所属人名字,用来创建一级文件夹名称 9 :return: none 10 """ 11 n = 0 12 while n


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有